package com.swf.common.utils;

import java.net.InetAddress;

import org.apache.commons.net.telnet.TelnetClient;

/**
 * 在Java的一些应用中，需要编写代码判断目标服务器的IP或者端口是否处于连通状态（这里的连通之IP能够ping通；ip和端口能够用telnet通）。
 * 本示例代码演示下面的内容： 1、利用commons-net第三方jar，测试指定IP和端口能够访问；
 * 2、利用jdk1.5+的特性，测试指定IP能否ping通
 * 
 * @author pengsy
 */
public class FwsNetUtils {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// 示例一：利用commons-net第三方jar，测试ip和端口的连通性
		// 说明：
		// 1、TelnetClient的connect方法并没有直接返回一个逻辑值，说明当前ip和port能够连接；
		// 2、测试连通性，注意给定超时时间
		// 3、能够连接，connect不会抛出异常信息；不能连接，connect方法会抛出异常
		boolean isConnect = false;
		try {
			TelnetClient client = new TelnetClient();

			client.setDefaultTimeout(3000);

			client.connect("192.168.90.254", 6610);

			isConnect = true;
		} catch (Exception e) {
			e.printStackTrace();
		}

		System.out.println("isConnect:" + isConnect);

		// 示例二：JDK1.5以上测试IP是否能够ping通
		// 说明:
		// 1、isReachable方法中给定的时间，为超时时间
		// 2、jdk1.5以下（不包括1.5）不支持方法isReachable
		try {
			InetAddress address = InetAddress.getByName("192.168.90.254");

			boolean reachable = address.isReachable(8080);

			System.out.println("Is host reachable? " + reachable);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		System.out.println("a".split("\\|")[0]);
	}

}
